import axiosHttp from './http.js'
import qs from 'qs'
import type { ApiResponse } from '@/types/api'

/**
 * 通用请求方法
 * @param url 请求地址
 * @param data 请求参数
 * @param type 请求方法，默认POST
 * @returns Promise<ApiResponse>
 */
export const request = (url: string, data?: any, type?: string): Promise<ApiResponse> => {
  return axiosHttp({
    url: url,
    data: qs.stringify(data),
    method: type || 'POST',
  }) as unknown as Promise<ApiResponse>
}

/**
 * JSON格式请求方法（用于数组参数）
 * @param url 请求地址
 * @param data 请求参数
 * @param header 请求头
 * @param type 请求方法，默认POST
 * @returns Promise<ApiResponse>
 */
export const requestJson = (url: string, data: any, header: any, type?: string): Promise<ApiResponse> => {
  return axiosHttp({
    url: url,
    data: JSON.stringify(data),
    headers: header,
    method: type || 'POST'
  }) as unknown as Promise<ApiResponse>
}

/**
 * JSON格式请求方法（用于对象参数）
 * @param url 请求地址
 * @param data 请求参数
 * @param header 请求头
 * @param type 请求方法，默认POST
 * @returns Promise<ApiResponse>
 */
export const requestJsonMap = (url: string, data: any, header: any, type?: string): Promise<ApiResponse> => {
  return axiosHttp({
    url: url,
    data: data,
    headers: header,
    method: type || 'POST'
  }) as unknown as Promise<ApiResponse>
}